#include <stdio.h>
#include <stdlib.h>
#include "../inc/type.h"
#include "../inc/node.h"
#include "../inc/ui.h"

// 方大大到此一游

enum function
{
    Add = 1, // 增加
    Sort,    // 排序
    Find,    // 查找
    Show,    // 展示成员信息
    Del,     // 删除
    Rand,
    exit1
};
int main()
{
    printf("adasdasda");
    printf("dasd ");
    printf("dakd ");
    node_t *head = initial(NULL);
    while (1)
    {
        ShowUI(); // 展示功能画面
        int option;
        printf("请输入操作\n");
        while (1)
        {
            if (scanf("%d", &option) == 1 && option >= 1 && option <= 7)
            {
                break;
            }
            while (getchar() != '\n')
                ;
            printf("输入格式有问题请重新输入\n");
        }
        // 初始化函数

        switch (option)
        {
        case Add:
            // 获得新数据
            student_t newdate = getnewdate();
            // 获得新节点
            node_t *newnode = initial(&newdate);
            // 先进行学号默认排序
            sortcmp(head, cmpnum);
            // 对节点默认进行学号排序
            sort(head, newnode);
            break;
        case Sort:
            // 展示按什么排序画面
            Showpicture();
            // 选择排序方式
            printf("请输入操作\n");
            int o;
            while (1)
            {
                if (1 != scanf("%d", &o))
                {
                    while (getchar() != '\n')
                        ;
                    printf("输入格式有问题请重新输入\n");
                    continue;
                }
                break;
            }
            switch (o)
            {
            case 1:
                sortcmp(head, cmpheight);
                printf("排序完成并展示结果\n");
                display(head);
                break;
            case 2:
                sortcmp(head, cmpnum);
                printf("排序完成并展示结果\n");
                display(head);
                break;
            case 3:
                sortcmp(head, cmpname);
                printf("排序完成并展示结果\n");
                display(head);
            default:
                break;
            }
            // 遍历排序完成后的结果

            break;
        case Find:
            node_t *find2 = NULL;
            ShowFindPicture(); // 展示查找画面
            int find1;
            while (1)
            {
                if (1 != scanf("%d", &find1))
                {
                    while (getchar() != '\n')
                        ;
                    printf("输入格式有问题请重新输入\n");
                    continue;
                }
                break;
            }

            find2 = findcmp(head, find1);
            if (find2 == NULL)
            {
                printf("没有找到该目标\n");
            }
            else
            {
                printf("找到该目标\n");
                printf("学号:%d,姓名：%s,身高：%f\n",
                       find2->date.num,
                       find2->date.name,
                       find2->date.height);
            }
            break;
        case Show:
            display(head);
            break;
        case Del:
            node_t *find3 = NULL;
            ShowFindPicture(); // 展示查找画面
            int find4;
            while (1)
            {
                if (1 != scanf("%d", &find4))
                {
                    while (getchar() != '\n')
                        ;
                    printf("输入格式有问题请重新输入\n");
                    continue;
                }
                break;
            }

            find3 = findcmp(head, find4);
            if (find3 == NULL)
            {
                printf("没有找到该目标\n");
            }
            else
            {
                printf("找到该目标\n");
                printf("学号:%d,姓名：%s,身高：%f\n",
                       find3->date.num,
                       find3->date.name,
                       find3->date.height);
                delet(find3);
                free(find3);
                printf("删除成功\n");
            }
            break;
        case Rand:
#if 1
            randcmp(head);
#endif
            break;
        case exit1:
            // 销毁
            destruction(head, head->next);
            return 0;
        }
    }
}